package com.machine.filling.util;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.preference.PreferenceManager;
import android.provider.Settings;

import com.google.gson.Gson;
import com.machine.filling.MyApp;
import com.machine.filling.net.http.response.ADListResBean;

/**
 * 通用provider
 */
public class SpUtils {
    private final SharedPreferences sharedPreferences;

    private SpUtils(Context mContext) {
        sharedPreferences = PreferenceManager
                .getDefaultSharedPreferences(mContext);
    }

    private static SpUtils instance;

    public static SpUtils getInstance(Context mContext) {
        if (instance == null) {
            instance = new SpUtils(mContext);
        }
        return instance;
    }

    public int getScreenOrientation() {
        return sharedPreferences.getInt("Screen_Orientation", ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }

    /**
     * 设置屏幕方向
     *
     * @param isVertical 竖屏
     */
    public void setScreenOrientation(boolean isVertical) {
        if (isVertical) {
            //垂直 竖屏
            sharedPreferences.edit().putInt("Screen_Orientation", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT).commit();
        } else {
            //横向 横屏
            sharedPreferences.edit().putInt("Screen_Orientation", ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE).commit();
        }
    }

    /**
     * 保存终端编号
     *
     * @param deviceNum
     */
    public void setDeviceNum(String deviceNum) {
        sharedPreferences.edit().putString("deviceNum", deviceNum).commit();
    }

    /**
     * 获取终端编号
     *
     * @return
     */
    public String getDeviceNum() {
        return sharedPreferences.getString("deviceNum",
                Settings.System.getString(MyApp.getInstance().getContentResolver(), Settings.Secure.ANDROID_ID));
    }

    /**
     * 设置终端id
     *
     * @param clientId
     */
    public void setClientId(String clientId) {
        sharedPreferences.edit().putString("clientId", clientId).commit();
    }

    /**
     * 获取终端id
     *
     * @return
     */
    public String getClientId() {
        return sharedPreferences.getString("clientId", "");
    }

    /**
     * 设置油站编号
     *
     * @param stationNum
     */
    public void setStationNum(String stationNum) {
        sharedPreferences.edit().putString("stationNum", stationNum).commit();
    }

    /**
     * 获取油站编号
     *
     * @return
     */
    public String getStationNum() {
        return sharedPreferences.getString("stationNum", "");
    }

    /**
     * 设置油站id
     *
     * @param stationId
     */
    public void setStationId(String stationId) {
        sharedPreferences.edit().putString("stationId", stationId).commit();
    }

    /**
     * 获取油站id
     *
     * @return
     */
    public String getStationId() {
        return sharedPreferences.getString("stationId", "");
    }

    /**
     * 设置油站名称
     *
     * @param stationName
     */
    public void setStationName(String stationName) {
        sharedPreferences.edit().putString("stationName", stationName).commit();
    }

    /**
     * 获取油站名称
     *
     * @return
     */
    public String getStationName() {
        return sharedPreferences.getString("stationName", "");
    }

    /**
     * 设置油站地址
     *
     * @param stationAddr
     */
    public void setStationAddr(String stationAddr) {
        sharedPreferences.edit().putString("stationAddr", stationAddr).commit();
    }

    /**
     * 获取油站地址
     *
     * @return
     */
    public String getStationAddr() {
        return sharedPreferences.getString("stationAddr", "");
    }


    /**
     * 设置油机id
     *
     * @param machineId
     */
    public void setMachineId(String machineId) {
        sharedPreferences.edit().putString("machineId", machineId).commit();
    }

    /**
     * 获取油机id
     *
     * @return
     */
    public String getMachineId() {
        return sharedPreferences.getString("machineId", "");
    }

    /**
     * 设置油机编号
     *
     * @param machineNum
     */
    public void setMachineNum(String machineNum) {
        sharedPreferences.edit().putString("machineNum", machineNum).commit();
    }

    /**
     * 获取油机编号
     *
     * @return
     */
    public String getMachineNum() {
        return sharedPreferences.getString("machineNum", "");
    }

    /**
     * 设置token
     * @param token
     */
    public void setToken(String token){
        sharedPreferences.edit().putString("token", token).commit();
    }

    /**
     * 获取token
     * @return
     */
    public String getToken(){
        return sharedPreferences.getString("token", "");
    }

    /**
     * 是否初始化完成
     * @param isOver
     */
    public void setInitComplete(boolean isOver){
        sharedPreferences.edit().putBoolean("isInitCompleted",isOver).commit();
    }

    /**
     * 是否初始化完成
     * @return
     */
    public boolean isInitCompleted(){
        return sharedPreferences.getBoolean("isInitCompleted",false);
    }

    /**
     * 保存流水号 (凭证号)  此流水号为油机的流水号,与其对应. !!!!!不能作为单个加油流程的流水号!!!!
     *
     * @param liushuihao
     */
    public void savePingZhengHao(String liushuihao){
        sharedPreferences.edit().putString("liushuihao",liushuihao).commit();
    }

    /**
     * 获取凭证号   !!!!!不能作为单个加油流程的流水号,单个流程的流水号从本地数据库获取!!!!
     * @return
     */
    public String getPingZhengHao(){
        return sharedPreferences.getString("liushuihao","");
    }

    /**
     * 获取下一个凭证号,即预约加油的凭证号
     * @return
     */
    public String getNextPingZhengHao(){
        return String.format("%04x",Integer.parseInt(getPingZhengHao(),16) + 1);
    }

    /**
     * 设置广告的返回数据  同时设置了 广告 改变的时间
     * @param adResult
     */
    public void setAdListResultStr(String adResult){
        sharedPreferences.edit().putString("adres",adResult).commit();
        setAdListChangeTime();
    }

    /**
     * 获取广告的返回数据
     * @return
     */
    public String getAdListResultStr(){
        return sharedPreferences.getString("adres","");
    }

    public ADListResBean getAdListResultBean(){
        String adRes = getAdListResultStr();
        return new Gson().fromJson(adRes, ADListResBean.class);
    }

    public void setAdListChangeTime(){
        sharedPreferences.edit().putLong("adChangeTime",System.currentTimeMillis());
    }

    /**
     * 获取广告改变的时间
     * @return
     */
    public long getAdListChangeTime(){
        return sharedPreferences.getLong("adChangeTime",0);
    }


}
